<?php

FLEA::loadClass('FLEA_Controller_Action');

class Controller_Admin_permissions extends FLEA_Controller_Action
{

	/**
	 * $md_perManager
	 * @var Model_PermissionManager
	 */
	var $md_perManager;
	
	function Controller_Admin_permissions()
	{
		$this->md_perManager =& FLEA::getSingleton('Model_PermissionManager');
		$this->md_perManager->controller_dir = APPDIR . '/' . FLEA::getAppInf('controllerAccessor') . '/';
	}
	
	/**
	 * 为了保证良好的可扩展性，一般的Index方法我都会做一个跳转，
	 * 留着以后需要的时候用来显示索引界面
	 */
	function actionIndex()
	{
		redirect($this->_url('permissionlist'));
	}
	
	/**
	 * 获取文件中的controller及action列表及数据库中的permission列表并输出
	 * 注意，控制器方法中除了组织数据和输出什么都不做
	 */
	function actionPermissionList()
	{
		
		//组织数据
		$infile = $this->md_perManager->find_Permissions();
		$indb = $this->md_perManager->read_from_db();
		$viewdata = array(
			// 数据库中的Permissions列表
			'dbPermissionsList' => $indb,
			// 已在文件中删除的Permissions列表
			'removeFromFile' => $this->md_perManager->per_missing_file($infile,$indb),
			// 文件中新增的Permissions列表
			'newInFile' => $this->md_perManager->new_per_infile($infile,$indb),
			// title标签
			'title' => '权限管理',
			// 当前菜单标签
			'menu_permissions' => 'id="current"',
	    );
	    
		$this->_executeView('admin/Websetup_permission.html', $viewdata);	

	}
	
	/**
	 * 将项目中新增的控制器方法添加到数据库中
	 */
	function actionPermissionSave()
	{
		$infile = $this->md_perManager->find_Permissions();
		$indb = $this->md_perManager->read_from_db();
		$arr = $this->md_perManager->new_per_infile($infile,$indb);
	    $this->md_perManager->saveAll_to_db($arr);
	}
	
	/**
	 * 将项目中删除的控制器方法从数据库中删除
	 */
	function actionPermissionRemove()
	{
		$infile = $this->md_perManager->find_Permissions();
		$indb = $this->md_perManager->read_from_db();
	    $arr = $this->md_perManager->per_missing_file($infile,$indb);
	    $this->md_perManager->removeAll_from_db($arr);
	}
	
	/**
	 * 更新权限组的别名
	 */
	function actionGroupAliasUpdate(){
		$this->_jumpto($this->md_perManager->GroupAliasUpdate($_POST));
	}
	
	/**
	 * 更新权限别名
	 */
	function actionPermissionAliasUpdate(){
		//dump($_POST);
		$this->_jumpto($this->md_perManager->PermissionAliasUpdate($_POST));
	}
	
	
	
	/**
	 * 判断错误并实施页面跳转
	 *
	 * @param boolin $stat
	 * @param string $err_text
	 * @param url $to_url
	 * @param url $err_url
	 */
	function _jumpto($stat, $err_text=null, $to_url=null, $err_url=null)
	{
		$err_text = isset($err_text) ? $err_text : "有错误发生！";
		$to_url = isset($to_url) ? $to_url : $this->_url('permissionlist');
		$err_url = isset($err_url) ? $err_url : $to_url;
		
		if($stat){
			redirect($to_url);
		}else{
			js_alert($err_text, '', $err_url);
		}
	}
	
	
	

	
}

?>